import { observe } from "./observe/index.js";
export function initData(vm) {
  // 可能是函数也可能是对象
  let data = vm.$options.data;
  if (typeof data === "function") {
    data = data.call(vm);
  } else {
    data = data || {};
  }
  vm._data = data;
  observe(data);
  // 将data中的属性代理到vm上 方便后续使用
  for (let key in data) {
    proxy(vm, key, "_data");
  }
}

function proxy(vm, key, source) {
  Object.defineProperty(vm, key, {
    get() {
      return vm[source][key];
    },
    set(newVal) {
      vm[source][key] = newVal;
    },
  });
}
